package cn.com.tomato.mapper;

import cn.com.tomato.model.ToDo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 【请填写功能名称】Mapper接口
 *
 * @author ruoyi
 * @date 2024-08-16
 */
public interface TodoMapper {
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    public ToDo selectTodoById(Long id);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param tTodo 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<ToDo> selectTodoList(ToDo tTodo);

    /**
     * 新增【请填写功能名称】
     *
     * @param tTodo 【请填写功能名称】
     * @return 结果
     */
    public int insertTodo(ToDo tTodo);

    /**
     * 修改【请填写功能名称】
     *
     * @param tTodo 【请填写功能名称】
     * @return 结果
     */
    public int updateTodo(ToDo tTodo);

    /**
     * 删除【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    public int deleteTodoById(Long id);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTodoByIds(Long[] ids);

    @Select("select max(todo.id) todoId, count(1) focusCount, sum(duration) focusDuration from t_todo todo inner join t_focus focus on todo.id = focus.tid where name = #{name}  group by name")
    public Map<String, Object> selectToDoFocusByName(String name);

    @Delete(value = "delete from t_todo a where a.sid = #{id}")
    public int deleteByToDoSet(Long toDoSetId);

}